bitkeeper revision 1.1389.1.61 (4284f1ddAO6PwLXgaP83tPIB0NH4cw)
authorsmh22@firebug.cl.cam.ac.uk <smh22@firebug.cl.cam.ac.uk>
Fri, 13 May 2005 18:28:45 +0000 (18:28 +0000)
committersmh22@firebug.cl.cam.ac.uk <smh22@firebug.cl.cam.ac.uk>
Fri, 13 May 2005 18:28:45 +0000 (18:28 +0000)
Cset exclude: cl349@firebug.cl.cam.ac.uk|ChangeSet|20050513143651|29037

tools/libxutil/sxpr_parser.c
tools/libxutil/sxpr_parser.h

index ba29c49f9cfced9ffcc50743281dd660c76f68a7..d32ef959b3c2b04e3a83cf8c6552f0db0225087f 100644 (file)
@@ -160,8 +160,6 @@ void Parser_free(Parser *z){
     if(!z) return;
     objfree(z->val);
     z->val = ONONE;
-    if (z->buf)
-        deallocate(z->buf);
     deallocate(z);
 }
 
@@ -173,7 +171,6 @@ Parser * Parser_new(void){
   
     if(!z) goto exit;
     err = 0;
-    z->buf = NULL;
     reset(z);
   exit:
     if(err){
@@ -204,16 +201,8 @@ static int inputchar(Parser *p, char c){
 static int savechar(Parser *p, char c){
     int err = 0;
     if(p->buf_i >= p->buf_n){
-        char *nbuf;
-        nbuf = allocate(2 * (p->buf_n + 1));
-        if (nbuf == NULL) {
-            err = -ENOMEM;
-            goto exit;
-        }
-        memcpy(nbuf, p->buf, p->buf_i);
-        deallocate(p->buf);
-       p->buf = nbuf;
-       p->buf_n = 2 * (p->buf_n + 1) - 1;
+        err = -ENOMEM;
+        goto exit;
     }
     p->buf[p->buf_i] = c;
     p->buf_i++;
@@ -698,16 +687,8 @@ int end_list(Parser *p){
 static void reset(Parser *z){
   IOStream *error_out = z->error_out;
   int flags = z->flags;
-  int buf_n = z->buf_n;
-  char *buf = z->buf;
   memzero(z, sizeof(Parser));
-  if (buf) {
-      z->buf = buf;
-      z->buf_n = buf_n;
-  } else {
-      z->buf = (char *)allocate(PARSER_BUF_SIZE);
-      z->buf_n = PARSER_BUF_SIZE - 1;
-  }
+  z->buf_n = sizeof(z->buf) - 1;
   z->buf_i = 0;
   z->line_no = 1;
   z->char_no = 0;
index a47554633d2af686c46edf37f3e77a086b3efaaa..0a3fde55fda1aa7f5895691d200ff765bd77d5df 100644 (file)
@@ -28,7 +28,7 @@
 /** Size of a parser input buffer.
  * Tokens read must fit into this size (including trailing null).
  */
-#define PARSER_BUF_SIZE 1024
+#define PARSER_BUF_SIZE 4096
 
 struct Parser;
 typedef int ParserStateFn(struct Parser *, char c);
@@ -60,7 +60,7 @@ typedef struct Parser {
     /** Lookahead character. */
     char c;
     /** Buffer for reading tokens. */
-    char *buf;
+    char buf[PARSER_BUF_SIZE];
     /** Size of token buffer. */
     int buf_n;
     int buf_i;